package com.treasure.mall.zbq.common;


import com.treasure.mall.zbq.common.ienum.base.CodeDescCommonEnum;

/**
 * @author wm
 */
public class EnumUtils {
    public static Object getEnumDesc(Class<? extends CodeDescCommonEnum> cls, Object code) {
        CodeDescCommonEnum ice = getEnumType(cls, code);
        if (ice != null) {
            return ice.getDesc();
        }
        return "";
    }

    public static <T extends CodeDescCommonEnum> T getEnumType(Class<T> cls, Object code) {
        if (code == null) {
            return null;
        }
        for (T item : cls.getEnumConstants()) {
            if (code.equals(item.getCode())) {
                return item;
            }
        }
        return null;
    }

    public static <T extends CodeDescCommonEnum> T getEnumType(Class<T> cls, Object code, T defaultVal) {
        T t = getEnumType(cls, code);
        return t == null ? defaultVal : t;
    }

//    /**
//     * 获取某个枚举类型的值列表
//     * @param enumClass 枚举类型
//     * @param <T>
//     * @return
//     */
//    public static <T extends Enum<T> & CodeDescCommonEnum> List<KeyValueItem> getEnumList(Class<T> enumClass) {
//        List<KeyValueItem> keyValueItemList = new ArrayList<>();
//        Enum[] arrEnums = enumClass.getEnumConstants();
//        for (Enum<T> e : arrEnums) {
//            CodeDescCommonEnum commonEnum = (CodeDescCommonEnum)e;
//            keyValueItemList.add(new KeyValueItem(commonEnum.getCode(),commonEnum.getDesc()));
//        }
//        return keyValueItemList;
//    }
}